/**
 *
 */
package info.san.efd.plugins;

import java.util.Set;

/**
 * @author ANGELLOZ-NICOUD Sébastien
 *
 * @version 1.0
 */
public interface PluginInterface {

    /**
     * This method will be called by downloader periodically to add those files to
     * its queue.
     * <br/><br/>
     * This method can either return new file determined between previous call and this call or
     * can return the totality of files to download.
     *
     * @return a set of (new) URL file to download.
     */
    public Set<String> getFileToDownload();

    /**
     * This method determine if the plugin has determined the totality of file to download.
     *
     * @return <code>true</code> if the downloader need to wait for new files, <code>false</code>
     * otherwise.
     */
    public boolean hasMoreFile();

    /**
     * This method is an help for the plugin if the program stop before the end of the
     * "determine files step".
     * <br/><br/>
     * The set will contains all known files by the downloader.
     *
     * @param knownFiles all URL file that have already been determine.
     */
    public void continueLookFor(Set<String> knownFiles);

}
